

class  MyBlockingQueue{
    private String[] data = null;
    private int head = 0;
    private int tail = 0;
    private int size = 0;
    private Object locker = new Object();
    public MyBlockingQueue(int capacity){
        data = new String[capacity];
    }
    public void put(String s) throws InterruptedException {
        synchronized (this){
            while(size==data.length){
                this.wait();
            }
            data[tail++] = s;
            if(tail>=data.length){
                tail = 0;
            }
            size++;
            this.notify();
        }
    }
    public String take() throws InterruptedException {
        String ret = "";
        synchronized (this){
            while(size==0){
                this.wait();
            }
            ret = data[head];
            head++;
            if(head>=data.length){
                head = 0;
            }
            size--;
            this.notify();
        }
        return ret;

    }
}
public class MyBlock {

}
